package com.cn.sl.server.common.dao

import com.cn.sl.server.common.model.BaseEntity
import org.springframework.data.domain.Sort

interface BaseCacheDao<T : BaseEntity, R> {
    fun getRepository(): R

    /**
     * 保存
     */
    fun save(entity: T)

    /**
     * 保存全部
     */
    fun saveAll(entities: Collection<T>)

    /**
     * 删除
     */
    fun deleteById(id: Long)

    fun deleteAllById(ids: List<Long>)

    /**
     * 删除
     */
    fun delete(entity: T)

    fun deleteAll(entities: Collection<T>)
    fun deleteAll()

    /**
     * 查询所有
     */
    fun findAll(): List<T>

    fun findAll(sort: Sort): List<T>

    /**
     * 根据id查询
     */
    fun findById(id: Long): T

    /**
     * 根据id查询，不存在则返回null
     */
    fun findByIdOrNull(id: Long): T?

    fun findAllById(ids: Collection<Long>): List<T>
}